package com.neutech.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mybatisflex.annotation.Table;
import com.neutech.core.BaseEntity;
import java.io.Serializable;
import java.sql.Date;

import java.io.Serial;
import java.time.LocalDate;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.EqualsAndHashCode;

/**
 * 学生表 实体类。
 *
 * @author Administrator
 * @since 2025-02-08
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(description = "学生表")
@Table("student")
public class Student extends BaseEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    public Student(Integer id, Boolean active) {
        super(id);
        this.active = active;
    }

    @Schema(description = "学号", type = "String")
    private String no;
    /**
     * 班级id
     */
    @Schema(description = "班级id", type = "Integer")
    private Integer gradeId;

    /**
     * 姓名
     */
    @Schema(description = "姓名", type = "String")
    private String name;

    /**
     * 学校
     */
    @Schema(description = "学校", type = "String")
    private String school;

    /**
     * 专业
     */
    @Schema(description = "专业", type = "String")
    private String major;

    /**
     * 学历
     */
    @Schema(description = "学历", type = "String")
    private String qualification;

    /**
     * 英语等级
     */
    @Schema(description = "英语等级", type = "String")
    private String englishLevel;

    /**
     * 其他语言
     */
    @Schema(description = "其他语言", type = "String")
    private String otherLanguage;

    /**
     * 毕业时间
     */
    @Schema(description = "毕业时间", type = "Date")
    private LocalDate graduationDate;

    /**
     * 手机号
     */
    @Schema(description = "手机号", type = "String")
    private String phone;


    /**
     * 电子信箱
     */
    @Schema(description = "电子信箱", type = "String")
    private String email;

    /**
     * 密码
     */
    @Schema(description = "密码", type = "String")
    @JsonIgnore
    private String password;


    /**
     * 状态
     */
    @Schema(description = "状态", type = "Boolean")
    private Boolean active;

}
